Alteryx Designer Cloud のツール紹介:RegEx ツール #Alteryx

Alteryx Designer Cloud のツール紹介:RegEx ツール #Alteryx

Clock Icon2023.04.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本記事では、Alteryx Analytics Cloudの Designer Cloud にある RegEx ツールについてご紹介します。

RegEx ツールの概要

RegEx ツールは、Parse カテゴリに属します。

入力データの指定のフィールドに対して、正規表現を適用した下記の4つの処理を行えるツールです。

Output Method 説明
Match フィールド内の文字列が、指定の正規表現にマッチするかどうか判定し、真偽値を追加出力します。
Parse フィールド内の文字列のうち、指定の正規表現にマッチする部分文字列を抽出します。
Replace フィールド内の文字列のうち、指定の正規表現にマッチする部分文字列を、指定した文字列に置換します。
Tokenize フィールド内の文字列を、指定の正規表現で分割します。

RegEx Tool | Alteryx Analytics Cloud


サンプルデータ

各機能の詳細は後述しますが、処理の例として、下記のサンプルデータを使用します。こちらは、Alteryx Designer においてサンプルデータとして用意されており、正規表現ツールのサンプルワークフローで用いられている「CustomerFileAddressesNarrow.yxdb」です。
例では「Address」フィールドを使用します。


正規表現のキャプチャ

RegEx ツールで正規表現を扱う際は、キャプチャについて知っておくと便利ですので、あわせてご紹介します。
正規表現におけるキャプチャとは、マッチした部分文字列を特定のグループに分け、後で参照できるようにすることです。
キャプチャでの参照の単位であるグループは、()を使用して定義します。Alteryx の場合、各グループの値はキャプチャの順番に応じて$1 ,$2のような番号付き変数に格納されます。
先のサンプルデータの Address フィールドに対して、下記のような正規表現を適用したとします。

(.*),(.*),(.*)\s(\d{5})(-\d{4})?

グループは、()で定義されるので、この場合、先頭の() から5つのグループに分割されることになります。各グループを文字で表現すると、下記のようになります。

  1. (.*), :コンマ , が現れるまで任意の文字列が0回以上続く文字列
  2. (.*), : コンマ , に続いて、コンマ , が現れるまで任意の文字列が0回以上続く文字列
  3. (.*)\s : 2つ目のコンマ ,に続いて、スペース \s が現れるまで任意の文字列が0回以上続く文字列
  4. (\d{5}) :5桁の数字
  5. (-\d{4})? :「先頭のハイフン -以降に4桁の数字が続く文字列」が、0回または1回現れる

サンプルデータの1レコード目は、下記の通りグループに分類されることになります。

RegEx ツールの設定

ツール設定の「Output Method」で先述の5つのオプションを指定します。どのオプションを選択したかにより、設定項目が異なります。


1.Match

このオプションでは、解析対象のフィールド内の文字列が、指定の正規表現にマッチするかどうか判定し、真偽値を追加出力します。Output Method に Match を選択した場合の設定内容と、その他の設定項目は下記の通りです。

  • Column To Parse
    • 解析対象のフィールドを選択します。
  • Regular Expression
    • 解析対象のフィールドに適用する正規表現を入力します。
  • Case Sensitive
    • 大文字小文字を区別するか指定します。区別する場合、チェックを入れます。
  • Column Name for Match Status
    • 各レコードが正規表現にマッチしたかの判定結果が出力されるので、そのフィールド名を入力します。

サンプルデータに上記の設定とした場合、出力は下記のようになります。
Column Name for Match Status で指定したBool型の「Address_Matched」フィールドが追加出力されています。

次に、正規表現を変更し末尾の「?」を除いて与えてみます。

(.*),(.*),(.*)\s(\d{5})(-\d{4})

末尾の「?」は、前のグループが0回または1回現れることを表します。下図の赤下線で示した箇所の有無がレコードによって異なります。

先の例では、末尾の「?」があることで、この部分があってもなくてもマッチしていましたが、末尾の「?」を除くと最後のグループ(-\d{4})が現れる文字列を意味するので、この部分がない、6レコード目以降は、正規表現にマッチせず false となっています。


2.Parse

このオプションでは、正規表現におけるキャプチャを使用します。解析対象のフィールドの文字列に対し、正規表現と()を使用して、キャプチャでの参照の単位であるグループを定義します。それによって、定義した各グループに該当するフィールドが追加出力されます。

下図は、先の例と同じ設定で、Output Method として「Parse」を指定した例です。

この場合、設定面で追加の項目はありません。ただし、正規表現で定義したグループ分のフィールドが追加出力されるので、各フィールドに対して、フィールド名データ型の変更が可能です。
※既定では「RegexOut」の接頭辞にグループの番号が順次付与された名称の文字列型フィールドとなります。

上記の設定をサンプルデータに適用した際の出力の一部は下図のようになります。

正規表現を変更し末尾の「?」を除いて与えると、先の例のようにマッチしないレコードはすべてNULLとして出力されます。


3.Replace

このオプションでは、解析対象のフィールドの文字列に対し、正規表現でマッチした箇所を「Replace With」に記載した内容で置き換えます。

※フィールドは追加出力されず、「Column To Parse」で指定した既存のフィールドが上書きされます。

下記の項目について、追加設定が必要です。

  • Replace With
    • 元の正規表現を置き換えるための文字列を記入します。
    • このオプションでは、キャプチャを使用することが想定されており、「Regular Expression」でグループを定義した場合、「Replace With」で参照可能となります。上図の設定の場合、5つのグループを定義しているので、Replace With 設定の「+」を押下すると下記のように$1~$5 までの定義したグループが表示されます。

※下部の「Entire find text」はすべてのグループ、「Literal $ character」は $ という文字列を新たに挿入したい場合に選択します。( $ を特殊文字ではなく、リテラル文字として入力します。)

  • Copy unmatched text to output
    • 正規表現とマッチしなかったレコードは置き換えが発生しないので、その出力方法を指定できます。チェックを入れると、既存のフィールドをそのまま(変更なく)出力し、チェックを外すとNULLとして出力します。

サンプルデータに対して、下記の設定を適用するとします。
正規表現は、先ほどから使用しているもののうち、末尾の? を除いたものです。
Replace With には Psotal Code : $4 とすることで、元の文字列の4グループ目(郵便番号を表す箇所)のみを抜き出し、前にPsotal Code : という文字列を加えています。

また、Copy unmatched text to output はチェックを外しています。

出力は下記のようになります。
※プロファイルをオンにして表示しています。

ここでは、わかりやすいようにもとのフィールドをコピーした「Address_Original」を追加していますが、ツールの処理が行われたのは一番右の「Address」フィールドです。

正規表現にマッチした6レコード目までは、指定のグループ($4)が指定の文字列(Psotal Code : )に連結する形で上書きされています。

7レコード目以降の、正規表現とマッチしなかったレコードは「Copy unmatched text to output」のチェックを外しているので、NULLとして出力されています。


4.Tokenize

解析対象のフィールドを指定の正規表現に一致する部分に分割できます。
Tokenize では、対象のフィールドを分割する際の分割方法として、「Split into Column(列に分割)」または「Split into Rows(行に分割)」を選択します。 Split into Rows を選択した場合、他の追加設定項目はありません。

下記は、分割方法として Split into Column を指定した際の設定画面です。

各設定項目の内容は下記の通りです。

  • Split into Column
    • Number of Output Columns
      • 分割するフィールド数を設定します。
    • Output Column Header
      • 新たなフィールドが1列以上、追加出力されるので、各フィールドの接頭辞を指定します。
    • If Extra Columns in Output
      • Number of Output Columns 以上に分割される場合の設定を選択します。
        • Do Not Include
          • 余分なフィールドを含まず出力します。
        • Do Not Include and Show Warning
          • 余分なフィールドを含まず、実行ログに警告もあわせて出力します。

上記の図の設定の場合、下記の出力となります。

正規表現([^,]+)は、コンマ以外の任意の文字列にマッチするので、3つのフィールドとして追加出力されています。

分割方法として Split into Rows を指定した場合、その名の通り、行に分割出力されます。サンプルデータの場合、各レコードが3つのフィールドに出力されたので、行に分割する場合、3行にわけて出力されることになります。その他のフィールド値は複製されます。

さいごに

Alteryx Analytics Cloud の Designer Cloud の Regex ツールについてご紹介しました。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.